﻿using System;
using System.Collections.Generic;
using System.Text;
using Entidad;
using System.Data;
using Persistencias;

namespace Persistencia
{
    public class PerUsuarioSist : IPersistencia
    {
        public PerUsuarioSist() { }

        public void Insertar(IEntidad entidad)
        {
            AccesoaDatos d = new AccesoaDatos();

            try
            {
                EntUsuarioSist UsuarioSist = (EntUsuarioSist)entidad;
                d.CrearParametro("@Nombre", UsuarioSist.Nombre, SqlDbType.NVarChar);
                d.CrearParametro("@Roll", UsuarioSist.Roll, SqlDbType.NVarChar);
                d.CrearParametro("@Password", UsuarioSist.Password, SqlDbType.NVarChar);
                d.EjecutaSentencia("InsertarUsuarioSist");

            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

        public void Eliminar(int Id)
        {
            try
            {
                AccesoaDatos d = new AccesoaDatos();

                d.CrearParametro("@IdUsuario", Id, SqlDbType.Int);
                d.EjecutaSentencia("sp_DeleteUsuarioSist");


            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

        public void Modificar(IEntidad entidad)
        {
            AccesoaDatos d = new AccesoaDatos();
            try
            {
                EntUsuarioSist UsuarioSist = (EntUsuarioSist)entidad;

                d.CrearParametro("@IdUsuarioSist", UsuarioSist.IdUsuarioSist, SqlDbType.NVarChar);
                d.CrearParametro("@Nombre", UsuarioSist.Nombre, SqlDbType.NVarChar);
                d.CrearParametro("@Roll", UsuarioSist.Roll, SqlDbType.NVarChar);
                d.CrearParametro("@Password", UsuarioSist.Password, SqlDbType.NVarChar);
                d.EjecutaSentencia("ModificarUsuarioSist");

            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

        public IEntidad Obtener(String NombreLogin)
        {
            throw new NotImplementedException();
        }

    

        public List<IEntidad> ObtenerTodos()
        {
            try
            {

                AccesoaDatos d = new AccesoaDatos();
                List<IEntidad> DatosUsuarioSist = new List<IEntidad>();
                DataTable _tabla = d.EjecutaSelect("ObtenerTodosUsuarioSist");
                foreach (DataRow _row in _tabla.Rows)
                {
                    EntUsuarioSist UsuarioSist = new EntUsuarioSist();

                    UsuarioSist.IdUsuarioSist = Convert.ToInt32(_row["IdUsuario"]);
                    UsuarioSist.Nombre = _row["Nombre"].ToString();
                    UsuarioSist.Roll = _row["Roll"].ToString();
                    UsuarioSist.Password = _row["Password"].ToString();
                    DatosUsuarioSist.Add(UsuarioSist);
                }
                return DatosUsuarioSist;
            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

      

        public EntUsuarioSist ObtenerYValidar(string Nombre, string Password)
        {
            try
            {
                AccesoaDatos d = new AccesoaDatos();
                EntUsuarioSist UsuarioSist = new EntUsuarioSist();
                d.CrearParametro("@Nombre", Nombre, SqlDbType.NVarChar);
                d.CrearParametro("@Password", Password, SqlDbType.NVarChar);
                DataTable _tabla = d.EjecutaSelect("ObtenerUsuarioYValidar");
                foreach (DataRow _row in _tabla.Rows)
                {
                    UsuarioSist.IdUsuarioSist = Convert.ToInt32(_row["IdUsuario"]);
                    UsuarioSist.Nombre = _row["Nombre"].ToString();
                    UsuarioSist.Roll = _row["Roll"].ToString();
                    UsuarioSist.Password = _row["Password"].ToString();
                    UsuarioSist.Valido = true;
                }
                return UsuarioSist;
            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }
    }
}
